home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / inet / internet-drafts / draft-ietf-tn3270e-enhancements-02.txt < prev    next >
Text File  |  1993-10-05  |  77KB  |  1,832 lines

  1. TN3270 Enhancements Working Group                             B. Kelly
  2. Internet Draft                                       Auburn University
  3.                                                           October 1993
  4.  
  5.  
  6.                         TN3270 Enhancements
  7.  
  8.          (filename: draft-ietf-tn3270e-enhancements-02.txt)
  9.  
  10.  
  11. Status of this Memo
  12.  
  13.    This document is an Internet Draft.  Internet Drafts are working
  14.    documents of the Internet Engineering Task Force (IETF), its Areas,
  15.    and its Working Groups.  Note that other groups may also distribute
  16.    working documents as Internet Drafts.
  17.  
  18.    Internet Drafts are draft documents valid for a maximum of six
  19.    months.  Internet Drafts may be updated, replaced, or obsoleted by
  20.    other documents at any time.  It is not appropriate to use Internet
  21.    Drafts as reference material or to cite them other than as a
  22.    "working draft" or "work in progress."
  23.  
  24.    Please check the 1id-abstracts.txt listing contained in the
  25.    internet-drafts Shadow Directories on ds.internic.net,
  26.    nic.nordu.net, ftp.nisc.sri.com, or munnari.oz.au to learn the
  27.    current status of any Internet Draft.
  28.  
  29. Abstract
  30.  
  31.    This document describes a protocol that more fully supports 3270
  32.    devices than do the existing tn3270 practices.  Specifically, it
  33.    defines a method of emulating both the terminal and printer members
  34.    of the 3270 family of devices via Telnet; it provides for the
  35.    ability of a Telnet client to request that it be assigned a
  36.    specific device-name (also referred to as "LU name" or "network
  37.    name"); finally, it adds support for a variety of functions such as
  38.    the ATTN key, the SYSREQ key, and SNA response handling.
  39.  
  40.    This protocol would be negotiated and implemented under a new
  41.    Telnet Option and would be unrelated to the Telnet 3270 Regime
  42.    Option as defined in RFC 1041 [1].
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57. B. Kelly                 Expires March 1994                   [Page 1]
  58.  
  59.  
  60. Internet Draft           TN3270 Enhancements              October 1993
  61.  
  62.  
  63. TABLE OF CONTENTS
  64.  
  65.    1.  INTRODUCTION ...............................................  2
  66.    2.  TN3270E OVERVIEW ...........................................  4
  67.    3.  COMMAND NAMES AND CODES ....................................  4
  68.    4.  COMMAND MEANINGS ...........................................  5
  69.    5.  DEFAULT SPECIFICATION ......................................  7
  70.    6.  MOTIVATION .................................................  7
  71.    7.  IMPLEMENTATION RULES .......................................  7
  72.       7.1  DEVICE-TYPE Negotiation ................................  7
  73.           7.1.1 Device Pools ......................................  8
  74.           7.1.2 CONNECT Command ...................................  9
  75.           7.1.3 ASSOCIATE Command .................................  9
  76.           7.1.4 Device Selection Rules ............................ 10
  77.           7.1.5 Accepting a Request ............................... 11
  78.           7.1.6 REJECT Command .................................... 11
  79.       7.2  FUNCTIONS Negotiation .................................. 12
  80.           7.2.1 Commands .......................................... 12
  81.           7.2.2 List of TN3270E Functions ......................... 13
  82.    8.  TN3270E DATA MESSAGES ...................................... 14
  83.       8.1  The TN3270E Message Header ............................. 15
  84.           8.1.1 DATA-TYPE Field ................................... 15
  85.           8.1.2 REQUEST-FLAG Field ................................ 16
  86.           8.1.3 RESPONSE-FLAG Field ............................... 16
  87.           8.1.4 SEQ-NUMBER Field .................................. 17
  88.    9.  BASIC TN3270E .............................................. 17
  89.       9.1  3270 Mode and NVT Mode ................................. 18
  90.    10. DETAILS OF PROCESSING TN3270E FUNCTIONS .................... 18
  91.       10.1 The SCS-CTL-CODES Function ............................. 19
  92.       10.2 The DATA-STEAM-CTL Function ............................ 19
  93.       10.3 The BIND-IMAGE Function ................................ 20
  94.       10.4 The RESPONSES Function ................................. 21
  95.          10.4.1 Response Messages ................................. 22
  96.       10.5 The SYSREQ Function .................................... 24
  97.          10.5.1 Background ........................................ 24
  98.          10.5.2 TN3270E Implementation of SYSREQ .................. 25
  99.    11. THE 3270 ATTN KEY .......................................... 26
  100.    12. 3270 STRUCTURED FIELDS ..................................... 27
  101.    13. EXAMPLES ................................................... 28
  102.    14. REFERENCES ................................................. 30
  103.    15. AUTHOR'S NOTE .............................................. 30
  104.    16. AUTHOR'S ADDRESS ........................................... 31
  105.  
  106.  
  107. 1.  Introduction
  108.  
  109.    Currently, support for 3270 terminal emulation over Telnet is
  110.    accomplished by the de facto standard of negotiating three separate
  111.    Telnet Options - Terminal-Type [2], Binary Transmission [3], and
  112.    End of Record [4].  Note that there is no RFC that specifies this
  113.    negotiation as a standard.  RFC 1041 attempted to standardize the
  114.  
  115.  
  116. B. Kelly                 Expires March 1994                   [Page 2]
  117.  
  118.  
  119. Internet Draft           TN3270 Enhancements              October 1993
  120.  
  121.  
  122.    method of negotiating 3270 terminal support by defining the 3270
  123.    Regime Telnet Option.  Unfortunately, very few developers and
  124.    vendors ever implemented RFC 1041.
  125.  
  126.    This document will refer to the existing practice of negotiating
  127.    these three Telnet Options before exchanging the 3270 data stream
  128.    as "traditional tn3270".
  129.  
  130.    NOTE: Except where otherwise stated, this document does not
  131.    distinguish between Telnet servers that represent SNA devices and
  132.    those that represent non-SNA 3270 devices.
  133.  
  134.    All references in this document to the 3270 data stream, 3270 data
  135.    stream commands, orders, structured fields and the like rely on
  136.    [5].  References to SNA Request and Response Units rely on [6].
  137.    References to SNA versus non-SNA operation rely on [7].
  138.  
  139.    There are several shortcomings in traditional tn3270; among them
  140.    are the following:
  141.  
  142.     - It provides no capability for Telnet clients to emulate the 328x
  143.       class of printers.
  144.  
  145.     - There is no mechanism by which a Telnet client can request that
  146.       a connection be associated with a given 3270 device-name.  This
  147.       can be of importance when a terminal session is being
  148.       established, since many host applications behave differently
  149.       depending on the network name of the terminal.  In the case of
  150.       printer emulation, this capability is an absolute necessity
  151.       because a large number of host applications have some method of
  152.       pre-defining printer destinations.
  153.  
  154.     - The 3270 ATTN and SYSREQ keys are not universally supported.
  155.  
  156.     - There is no support for the SNA positive/negative response
  157.       process.  This is particularly important if printer emulation is
  158.       to function properly, but is also useful for some terminal
  159.       applications.  A positive response is used to indicate that
  160.       the previously received data has been successfully processed.
  161.       A negative response indicates some sort of error has occurred
  162.       while processing the previously received data; this could be
  163.       caused by the host application building a 3270 data stream that
  164.       contains an invalid command, or by a mechanical error at the
  165.       client side, among other things.
  166.  
  167.     - There is no mechanism by which the client can access the SNA
  168.       Bind information.  The Bind image contains a detailed
  169.       description of the session between the Telnet server and the
  170.       host application.
  171.  
  172.  
  173.  
  174.  
  175. B. Kelly                 Expires March 1994                   [Page 3]
  176.  
  177.  
  178. Internet Draft           TN3270 Enhancements              October 1993
  179.  
  180.  
  181.     - There is no mechanism by which the server can determine whether
  182.       a client supports 3270 structured fields, or a client can
  183.       request that it receive them.
  184.  
  185.  
  186. 2.  TN3270E Overview
  187.  
  188.    In order to address these issues, this document proposes a new
  189.    Telnet Option - TN3270E (option number has yet to be assigned).
  190.    Telnet clients and servers would be free to negotiate support of
  191.    the TN3270E option or not. If either side does not support TN3270E,
  192.    traditional tn3270 can be used; otherwise, a sub-negotiation will
  193.    occur to determine what subset of TN3270E will be used on the
  194.    session.  It is anticipated that a client or server capable of both
  195.    types of 3270 emulation would attempt to negotiate TN3270E first,
  196.    and only negotiate traditional tn3270 if the other side refuses
  197.    TN3270E.
  198.  
  199.    Once a client and server have agreed to use TN3270E, negotiation of
  200.    the TN3270E suboptions can begin.  The two major elements of
  201.    TN3270E sub-negotiation are:
  202.  
  203.     - a device-type negotiation that is similar to, but somewhat
  204.       more complicated than, the existing Telnet Terminal-Type Option.
  205.  
  206.     - the negotiation of a set of supported 3270 functions, such as
  207.       printer data stream type (3270 data stream or SNA Character
  208.       Stream), positive/negative response exchanges, device status
  209.       information, and the passing of BIND information from server to
  210.       client.
  211.  
  212.    Successful negotiation of these two suboptions signals the
  213.    beginning of 3270 data stream transmission. In order to support
  214.    several of the new functions in TN3270E, each data message must be
  215.    prefixed by a header.  This header will contain flags and
  216.    indicators that convey such things as positive and negative
  217.    responses and what type of data follows the header (for example,
  218.    3270 data stream, SNA Character Stream, or device status
  219.    information).
  220.  
  221.  
  222. 3.  Command Names and Codes
  223.  
  224.        TN3270E        (to be assigned)
  225.          ASSOCIATE          00
  226.          CONNECT            01
  227.          DEVICE-TYPE        02
  228.          FUNCTIONS          03
  229.          IS                 04
  230.          REASON             05
  231.  
  232.  
  233.  
  234. B. Kelly                 Expires March 1994                   [Page 4]
  235.  
  236.  
  237. Internet Draft           TN3270 Enhancements              October 1993
  238.  
  239.  
  240.          REJECT             06
  241.          REQUEST            07
  242.          SEND               08
  243.  
  244.        Reason-codes
  245.          CONN-PARTNER       00
  246.          DEVICE-IN-USE      01
  247.          INV-ASSOCIATE      02
  248.          INV-DEVICE-NAME    03
  249.          INV-DEVICE-TYPE    04
  250.          TYPE-NAME-ERROR    05
  251.          UNKNOWN-ERROR      06
  252.          UNSUPPORTED-REQ    07
  253.  
  254.        Function Names
  255.          BIND-IMAGE         00
  256.          DATA-STREAM-CTL    01
  257.          RESPONSES          02
  258.          SCS-CTL-CODES      03
  259.          SYSREQ             04
  260.  
  261.  
  262. 4.  Command Meanings
  263.  
  264.    IAC WILL TN3270E
  265.  
  266.       The sender of this command is willing to send TN3270E
  267.       information in subsequent sub-negotiations.
  268.  
  269.    IAC WON'T TN3270E
  270.  
  271.       The sender of this command refuses to send TN3270E information.
  272.  
  273.    IAC DO TN3270E
  274.  
  275.       The sender of this command is willing to receive TN3270E
  276.       information in subsequent sub-negotiations.
  277.  
  278.    IAC DON'T TN3270E
  279.  
  280.       The sender of this command refuses to receive TN3270E
  281.       information.
  282.  
  283.    Note that while they are not explicitly negotiated, the equivalent
  284.    of the Telnet Binary Transmission Option [3] and the Telnet End of
  285.    Record Option [4] is implied in the negotiation of the TN3270E
  286.    Option.  That is, a party to the negotiation that agrees to support
  287.    TN3270E is automatically required to support bi-directional binary
  288.    and EOR transmissions.
  289.  
  290.  
  291.  
  292.  
  293. B. Kelly                 Expires March 1994                   [Page 5]
  294.  
  295.  
  296. Internet Draft           TN3270 Enhancements              October 1993
  297.  
  298.  
  299.    IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  300.  
  301.       Only the server may send this command.  This command is used to
  302.       request that the client transmit a device-type and, optionally,
  303.       device-name information.
  304.  
  305.    IAC SB TN3270E DEVICE-TYPE REQUEST <device-type>
  306.           [CONNECT | ASSOCIATE <device-name>] IAC SE
  307.  
  308.       Only the client may send this command.  It is used in response
  309.       to the server's SEND DEVICE-TYPE command, as well as to suggest
  310.       another device-type after the server has sent a DEVICE-TYPE
  311.       REJECT command (see below).  This command requests emulation of
  312.       a specific 3270 device type and model.  The REQUEST command may
  313.       optionally include either the CONNECT or the ASSOCIATE command
  314.       (but not both).  If present, CONNECT and ASSOCIATE must both be
  315.       followed by <device-name>.  (See the section entitled
  316.       "Implementation Rules" for more detailed information.)
  317.  
  318.    IAC SB TN3270E DEVICE-TYPE IS <device-type> CONNECT
  319.           <device-name> IAC SE
  320.  
  321.       Only the server may send this command.  This command is used to
  322.       accept a client's DEVICE-TYPE REQUEST command.
  323.  
  324.    IAC SB TN3270E DEVICE-TYPE REJECT REASON <reason-code> IAC SE
  325.  
  326.       Only the server may send this command.  This command is used to
  327.       reject a client's DEVICE-TYPE REQUEST command.
  328.  
  329.    IAC SB TN3270E FUNCTIONS REQUEST <function-list> IAC SE
  330.  
  331.       Either side may send this command.  This command is used to
  332.       suggest a set of 3270 functions that will be supported on this
  333.       session.  It is also sent as an implicit rejection of a previous
  334.       FUNCTIONS REQUEST command sent by the other side (see the
  335.       section entitled "Implementation Rules" for more information).
  336.       Note that when used to reject a FUNCTIONS REQUEST command, the
  337.       function-list must not be identical to that received in the
  338.       previous REQUEST command.
  339.  
  340.    IAC SB TN3270E FUNCTIONS IS <function-list> IAC SE
  341.  
  342.       Either side may send this command.  This command is sent as a
  343.       response to a FUNCTIONS REQUEST command and implies acceptance
  344.       of the set of functions sent to it in the REQUEST command.  Note
  345.       that the list of functions in the FUNCTIONS IS command must
  346.       match the list that was received in the previous FUNCTIONS
  347.       REQUEST command.
  348.  
  349.  
  350.  
  351.  
  352. B. Kelly                 Expires March 1994                   [Page 6]
  353.  
  354.  
  355. Internet Draft           TN3270 Enhancements              October 1993
  356.  
  357.  
  358. 5.  Default Specification
  359.  
  360.    WON'T TN3270E
  361.  
  362.    DON'T TN3270E
  363.  
  364.    i.e., TN3270E will not be used.
  365.  
  366.  
  367. 6.  Motivation
  368.  
  369.    See the section entitled "Introduction."
  370.  
  371.  
  372. 7.  Implementation Rules
  373.  
  374.    All TN3270E commands and parameters are NVT ASCII strings in which
  375.    upper and lower case are considered equivalent.
  376.  
  377.    Once it has been agreed that TN3270E will be supported, the first
  378.    sub-negotiation must concern the DEVICE-TYPE (and possibly
  379.    DEVICE-NAME) information.  Only after that has been successfully
  380.    negotiated can the client and server exchange FUNCTIONS
  381.    information.  Only after both DEVICE-TYPE and FUNCTIONS have been
  382.    successfully negotiated can 3270 data stream transmission occur.
  383.  
  384.  
  385.    7.1 DEVICE-TYPE Negotiation
  386.  
  387.       Device-type (and device-name) negotiation begins when the server
  388.       transmits the DEVICE-TYPE SEND command to the client.  The
  389.       client responds with the DEVICE-TYPE REQUEST command, which must
  390.       include a device-type and may include a device-name request.
  391.  
  392.       Valid device-types are:
  393.  
  394.         terminals: IBM-3278-2     IBM-3278-2-E
  395.                    IBM-3278-3     IBM-3278-3-E
  396.                    IBM-3278-4     IBM-3278-4-E
  397.                    IBM-3278-5     IBM-3278-5-E
  398.  
  399.          printers: IBM-3287-1
  400.  
  401.       Note that the use of '3278' and '3287' is not intended to
  402.       exclude any particular device capabilities; they are used here
  403.       only because they are commonly known designations for a terminal
  404.       and a printer member of the 3270 family of devices.  A client's
  405.       ability to support the more advanced functions of the 3270 data
  406.       stream will be indicated via means other than an IBM device type
  407.       and model number.
  408.  
  409.  
  410.  
  411. B. Kelly                 Expires March 1994                   [Page 7]
  412.  
  413.  
  414. Internet Draft           TN3270 Enhancements              October 1993
  415.  
  416.  
  417.       Terminal device-types with the "-E" suffix should only be
  418.       negotiated by clients that are willing to support some subset of
  419.       the 3270 "extended data stream."  This usually includes at a
  420.       minimum support for extended colors and highlighting, but may
  421.       also include a number of other functions, such as graphics
  422.       capability, alternate character sets, and partitions.
  423.  
  424.       TN3270E clients that negotiate a terminal device-type with the
  425.       "-E" suffix, as well as those that negotiate a printer
  426.       device-type, must be able to accept and respond to a Read
  427.       Partition Query command (see the section entitled "3270
  428.       Structured Fields").  This allows the client to indicate to host
  429.       applications which subsets of the 3270 extended data stream the
  430.       client is willing to support.
  431.  
  432.  
  433.      7.1.1 Device Pools
  434.  
  435.       An explanation of the CONNECT and ASSOCIATE commands first
  436.       requires a discussion of the organization of terminal and
  437.       printer device pools that the server maintains and from which it
  438.       selects device-names to assign to session requests.  (The terms
  439.       "device-name", "LU name" and "network name" can be considered
  440.       interchangeable in this document.)  Also, for the purposes of
  441.       this discussion, the term "generic session request" will be used
  442.       to describe a request for a session by a Telnet client (either
  443.       traditional or TN3270E) that does not include a request for a
  444.       specific device-name.  The term "specific session request" will
  445.       be used to describe a request for a session by a TN3270E client
  446.       that includes a request for a specific device-name (either via
  447.       CONNECT or ASSOCIATE).
  448.  
  449.       As is the case with traditional tn3270, the TN3270E server must
  450.       maintain a set of terminal device-names.  A generic request for
  451.       a terminal session would result in the server selecting any
  452.       available device-name from this pool.  The server, however, may
  453.       also maintain a separate pool of terminal device-names which can
  454.       only be used to satisfy specific terminal session requests.
  455.       This is to ensure that a terminal device that has some
  456.       significance to host applications (and is therefore likely to be
  457.       the target of a specific session request) is not "accidentally"
  458.       assigned to a generic request and winds up associated with a
  459.       client that has no use for it.  Note that the reverse situation
  460.       is allowed.  That is, a specific terminal session request could
  461.       ask for a device-name that happens to be in the "generic
  462.       terminal pool."
  463.  
  464.       For each terminal device (in both the "generic" and the
  465.       "specific" pools), the TN3270E server could also have defined a
  466.       "partner" or "paired" printer device.  There should be a unique,
  467.       one-to-one mapping between a terminal and its associated
  468.  
  469.  
  470. B. Kelly                 Expires March 1994                   [Page 8]
  471.  
  472.  
  473. Internet Draft           TN3270 Enhancements              October 1993
  474.  
  475.  
  476.       printer.  The reasoning behind such a configuration is to allow
  477.       for those host applications that produce printed output bound
  478.       for a printer whose device-name is determined by the device-name
  479.       of the terminal that initiated the print request.  These printer
  480.       devices can only be assigned to specific printer session
  481.       requests that use the ASSOCIATE command (see below).
  482.  
  483.       In addition, the TN3270E server may also maintain a pool of
  484.       printer device-names that are not associated with any terminal.
  485.       These printer devices can only be assigned to specific printer
  486.       session requests that use the CONNECT command (see below).  This
  487.       allows for those host applications that generate printed output
  488.       bound for a printer whose device-name is determined by something
  489.       other than the device-name of the terminal that initiated the
  490.       print request (for example, when the userid of the person signed
  491.       on to a terminal determines the print destination).
  492.  
  493.       Finally, it is possible that a pool of printer device-names
  494.       could be maintained and used only to satisfy generic requests
  495.       for printers.
  496.  
  497.  
  498.      7.1.2 CONNECT Command
  499.  
  500.       CONNECT is used by the client to request that the server assign
  501.       a specific device-name to this Telnet session; it may be used
  502.       when requesting either a terminal or a printer session.  The
  503.       specified device-name must not conflict with the device-type;
  504.       e.g., if the client requests DEVICE-TYPE IBM-3287-1 (a printer)
  505.       and specifies CONNECT T1000001, but T1000001 is defined at the
  506.       host as a terminal, then the server should deny the request.
  507.       Further, if the requested device-name is already associated with
  508.       some other Telnet session, or if it is not defined to the
  509.       server, the server should deny the request.
  510.  
  511.  
  512.      7.1.3 ASSOCIATE Command
  513.  
  514.       ASSOCIATE can be used by the client only when requesting a
  515.       DEVICE-TYPE that represents a printer. The ASSOCIATE command
  516.       requests that this session be assigned the device-name of the
  517.       printer that is paired with the terminal named in the request.
  518.       If the device-type does not represent a printer, or if the
  519.       device-name is not that of a terminal, then the server should
  520.       deny the request.  It is anticipated that the device-name
  521.       specified in this request would be one returned by the server
  522.       when accepting a previous terminal session request (see the IS
  523.       command below).  Since no means of authentication has been
  524.       provided for, it is possible that the printer paired with the
  525.       terminal specified in the ASSOCIATE command has already been
  526.       assigned to some other Telnet session; in this case, the server
  527.       should deny the request.
  528.  
  529. B. Kelly                 Expires March 1994                   [Page 9]
  530.  
  531.  
  532. Internet Draft           TN3270 Enhancements              October 1993
  533.  
  534.  
  535.      7.1.4 Device Selection Rules
  536.  
  537.       To summarize, assume a TN3270E server has the following device
  538.       pools defined to it (device-names that begin with a "T" are
  539.       terminal devices; those that begin with a "P" are printers):
  540.  
  541.        Generic Terminal Pool              Specific Terminal Pool
  542.        ---------------------              ----------------------
  543.        TG000001 <--> PTG00001             TS000001 <--> PTS00001
  544.        TG000002 <--> PTG00002             TS000002 <--> PTS00002
  545.        TG000003 <--> PTG00003             TS000003 <--> PTS00003
  546.  
  547.        Generic Printer Pool               Specific Printer Pool
  548.        --------------------               ----------------------
  549.             PG000001                            PS000001
  550.             PG000002                            PS000002
  551.             PG000003                            PS000003
  552.  
  553.       Note that the only pool that absolutely must be defined to the
  554.       server is the generic terminal pool.  The absence of other pools
  555.       (or of partner printers for a terminal pool) simply means that
  556.       the server is unable to satisfy as wide a variety of requests as
  557.       would be possible if all pools were defined to it.
  558.  
  559.       Given the above configuration, the following rules apply:
  560.  
  561.       - a generic terminal request can only be satisfied from the
  562.         generic terminal pool (device-names TG000001 - TG000003).
  563.       - a specific terminal request (allowable only via the CONNECT
  564.         command) can be satisfied from either the generic or the
  565.         specific terminal pool, although it is anticipated that the
  566.         majority of such requests would ask for terminals in the
  567.         specific terminal pool (TS000001 - TS000003).
  568.  
  569.       - a generic printer request can only be satisfied from the
  570.         generic printer pool (device-names PG000001 - PG000003).
  571.  
  572.       - a specific printer request may come in one of two forms:
  573.  
  574.         via ASSOCIATE: the request can only be satisfied using the
  575.                        partner of the specified terminal, which
  576.                        may be in the generic or the specific
  577.                        terminal pool; therefore, devices in the
  578.                        ranges PTG00001 - PTG00003 and PTS00001 -
  579.                        PTS00003 can be used to satisfy the request.
  580.  
  581.         via CONNECT:   the request can be satisfied either from
  582.                        the generic or the specific printer pools
  583.                        (although, as with specific terminal requests,
  584.                        it is likely that most such requests will name
  585.                        printers in the specific printer pool); this
  586.  
  587.  
  588. B. Kelly                 Expires March 1994                  [Page 10]
  589.  
  590.  
  591. Internet Draft           TN3270 Enhancements              October 1993
  592.  
  593.  
  594.                        request cannot be satisfied with the partner
  595.                        printer of a terminal in either the specific or
  596.                        the generic terminal pools.
  597.  
  598.  
  599.      7.1.5 Accepting a Request
  600.  
  601.       The server must accept the client's request or deny it as a
  602.       whole - it cannot, for example, accept the DEVICE-TYPE request
  603.       but deny the CONNECT portion.
  604.  
  605.       If the server wishes to accept the request, it sends back the
  606.       DEVICE-TYPE IS command confirming the requested device-type and
  607.       the CONNECT command specifying the device-name of the terminal
  608.       or printer assigned to this Telnet session.  This device-name
  609.       may be the one directly requested (via CONNECT) by the client,
  610.       the one indirectly requested (via ASSOCIATE) by the client, or
  611.       one chosen by the server if the client specified neither CONNECT
  612.       nor ASSOCIATE.
  613.  
  614.  
  615.      7.1.6 REJECT Command
  616.  
  617.       If the server wishes to deny the request, it sends back the
  618.       DEVICE-TYPE REJECT command with one of the following
  619.       reason-codes:
  620.  
  621.          Reason code name         Explanation
  622.          ----------------         -----------------------------------
  623.          INV-DEVICE-TYPE          The server does not support the
  624.                                   requested device-type.
  625.  
  626.          INV-DEVICE-NAME          The device-name specified in the
  627.                                   CONNECT or ASSOCIATE command is
  628.                                   not known to the server.
  629.  
  630.          DEVICE-IN-USE            The requested device-name is
  631.                                   already associated with another
  632.                                   Telnet session.
  633.  
  634.          TYPE-NAME-ERROR          The requested device-name is
  635.                                   incompatible with the requested
  636.                                   device-type (such as terminal/
  637.                                   printer mismatch).
  638.  
  639.          UNSUPPORTED-REQ          The server is unable to satisfy
  640.                                   the type of request sent by the
  641.                                   client; e.g., a specific terminal
  642.                                   or printer was requested but the
  643.                                   server does not have such a pool of
  644.                                   device-names defined to it, or the
  645.  
  646.  
  647. B. Kelly                 Expires March 1994                  [Page 11]
  648.  
  649.  
  650. Internet Draft           TN3270 Enhancements              October 1993
  651.  
  652.  
  653.                                   ASSOCIATE command was used but no
  654.                                   partner printers are defined to the
  655.                                   server.
  656.  
  657.          INV-ASSOCIATE            The client used the ASSOCIATE
  658.                                   command and either the device-type
  659.                                   is not a printer or the device-name
  660.                                   is not a terminal.
  661.  
  662.          CONN-PARTNER             The client used the CONNECT command
  663.                                   to request a specific printer but
  664.                                   the device-name requested is the
  665.                                   partner to some terminal.
  666.  
  667.          UNKNOWN-ERROR            Any other error in device type or
  668.                                   name processing has occurred.
  669.  
  670.       The process of negotiating a device-type and device-name that
  671.       are acceptable to both client and server may entail several
  672.       iterations of DEVICE-TYPE REQUEST and DEVICE-TYPE REJECT
  673.       commands.  The client should make use of the reason-code
  674.       specified by the server in any DEVICE-TYPE REJECT command(s) to
  675.       minimize the amount of negotiation necessary.  For example, if
  676.       the client initially requests that it be assigned a specific
  677.       terminal device-name via the CONNECT command, and the server
  678.       rejects the request with a reason-code of UNSUPPORTED-REQ, the
  679.       client should make no further specific terminal requests in the
  680.       negotiations.  If at any point in the process either side wishes
  681.       to "bail out," it can simply send a WON'T (or DON'T) TN3270E
  682.       command to the other side.  At this point both sides are free to
  683.       negotiate other Telnet options (including traditional tn3270).
  684.  
  685.  
  686.    7.2 FUNCTIONS Negotiation
  687.  
  688.       Once the DEVICE-TYPE negotiation has successfully completed
  689.       (i.e, when the client receives the DEVICE-TYPE IS command), the
  690.       client should initiate the FUNCTIONS negotiation by sending the
  691.       FUNCTIONS REQUEST command to the server.  After this initial
  692.       REQUEST command, both sides are free to transmit FUNCTIONS
  693.       REQUEST and FUNCTIONS IS commands as needed.
  694.  
  695.  
  696.      7.2.1 Commands
  697.  
  698.       The FUNCTIONS REQUEST command contains a list of the 3270
  699.       functions that the sender would like to see supported on this
  700.       session.  All functions not in the list are to be considered
  701.       unsupported.  The function-list consists of a string of 2-byte
  702.       entries separated from one another by a single space character.
  703.       The list is terminated by the IAC code that precedes the SE
  704.       command.  Functions may appear in any order in the list.
  705.  
  706. B. Kelly                 Expires March 1994                  [Page 12]
  707.  
  708.  
  709. Internet Draft           TN3270 Enhancements              October 1993
  710.  
  711.  
  712.       Upon receipt of a FUNCTIONS REQUEST command, the recipient has
  713.       two choices:
  714.  
  715.        - it may respond in the positive (meaning it agrees to support
  716.          all functions in the list, and not to transmit any data
  717.          related to functions not in the list).  To do this, it sends
  718.          the FUNCTIONS IS command with the function-list exactly as it
  719.          was received.  At this point, FUNCTIONS negotiation has
  720.          successfully completed.
  721.  
  722.        - it may respond in the negative by sending a FUNCTIONS
  723.          REQUEST command in which the function-list differs from the
  724.          one it received (and not simply in the order of appearance
  725.          of functions in the list; at least one function must have
  726.          been added to, or removed from, the list).
  727.  
  728.       To avoid endlessly looping, neither party should add to the
  729.       function-list it receives any function that it has previously
  730.       added and that the other side has removed.
  731.  
  732.       The process of sending FUNCTIONS REQUEST commands back and forth
  733.       continues until one side receives a function-list it is willing
  734.       to live with.  It uses the FUNCTIONS IS command to accept the
  735.       list, and, once this command is received by the other side, all
  736.       necessary negotiation has been completed.  At this point, 3270
  737.       data stream transmission can begin.
  738.  
  739.       Note that it is possible that the function-list agreed to is
  740.       null; this is referred to as "basic TN3270E."  See the section
  741.       entitled "Basic TN3270E" for more information.
  742.  
  743.  
  744.      7.2.2 List of TN3270E Functions
  745.  
  746.       The following list briefly describes the 3270 functions that may
  747.       be negotiated in the function-list:
  748.  
  749.           Function Name       Description
  750.           -------------       -----------
  751.          SCS-CTL-CODES       (Printer sessions only).  Allows the use
  752.                              of the SNA Character Stream (SCS) and SCS
  753.                              control codes on the session.  SCS is
  754.                              used with LU type 1 SNA sessions.
  755.  
  756.          DATA-STREAM-CTL     (Printer sessions only).  Allows the use
  757.                              of the standard 3270 data stream.  This
  758.                              corresponds to LU type 3 SNA sessions.
  759.  
  760.          RESPONSES           Provides support for positive and
  761.                              negative response handling.  Allows the
  762.                              server to reflect to the client any and
  763.  
  764.  
  765. B. Kelly                 Expires March 1994                  [Page 13]
  766.  
  767.  
  768. Internet Draft           TN3270 Enhancements              October 1993
  769.  
  770.  
  771.                              all definite, exception, and no response
  772.                              requests sent by the host application.
  773.  
  774.          BIND-IMAGE          Allows the server to send the SNA Bind
  775.                              image and Unbind notification to the
  776.                              client.
  777.  
  778.          SYSREQ              Allows the client and server to emulate
  779.                              some (or all, depending on the server) of
  780.                              the functions of the SYSREQ key in an SNA
  781.                              environment.
  782.  
  783.       See the section entitled "Details of Processing TN3270E
  784.       Functions" for a more detailed explanation of the meaning and
  785.       use of these functions.
  786.  
  787.  
  788. 8.  TN3270E Data Messages
  789.  
  790.    3270 device communications are generally understood to be block
  791.    oriented in nature.  That is, each partner buffers data until an
  792.    entire "message" has been built, at which point the data is sent to
  793.    the other side.  The "outbound message" (from host to device)
  794.    consists of a 3270 command and a series of buffer orders, buffer
  795.    addresses, and data, while the "inbound message" contains only
  796.    buffer orders, addresses and data.  The end of a message is
  797.    understood to be the last byte transmitted (note that this
  798.    discussion disregards SNA chaining).  The Telnet EOR command is
  799.    used to delimit these natural 3270 blocks of data within the Telnet
  800.    data stream.
  801.  
  802.    In TN3270E, each 3270 message must be prefixed with a TN3270E
  803.    header, which consists of five bytes and whose format is defined
  804.    below (see the section entitled "The TN3270E Message Header").
  805.  
  806.    A "data message" in TN3270E therefore has the following
  807.    construction:
  808.  
  809.           <TN3270E Header><data><IAC EOR>
  810.  
  811.    It should be noted that it is possible that, for certain message
  812.    types, there is no data portion present.  In this case, the TN3270E
  813.    data message consists of:
  814.  
  815.           <TN3270E Header><IAC EOR>
  816.  
  817.    Note also that Telnet commands may appear anywhere in the Telnet
  818.    stream.  For this reason, if either side wishes to transmit the
  819.    decimal value 255 and have it interpreted as data, it must "double"
  820.    this byte.  In other words, a single occurrence of decimal 255 will
  821.    be interpreted by the other side as an IAC, while two successive
  822.  
  823.  
  824. B. Kelly                 Expires March 1994                  [Page 14]
  825.  
  826.  
  827. Internet Draft           TN3270 Enhancements              October 1993
  828.  
  829.  
  830.    bytes containing decimal 255 will be treated as one data byte with
  831.    a value of decimal 255.
  832.  
  833.  
  834.    8.1 The TN3270E Message Header
  835.  
  836.       As stated earlier, each data message in TN3270E must be prefixed
  837.       by a header, which consists of five bytes and is formatted as
  838.       follows:
  839.  
  840.        -----------------------------------------------------------
  841.        | DATA-TYPE | REQUEST-FLAG | RESPONSE-FLAG |  SEQ-NUMBER  |
  842.        -----------------------------------------------------------
  843.           1 byte        1 byte         1 byte         2 bytes
  844.  
  845.  
  846.      8.1.1 DATA-TYPE Field
  847.  
  848.       The DATA-TYPE field indicates how the data portion of the
  849.       message is to be interpreted by the receiver.  Possible values
  850.       for the DATA-TYPE field are:
  851.  
  852.         Data-type Name   Code                Meaning
  853.         --------------   ----   ---------------------------------
  854.         3270-DATA        0x00   The data portion of the message
  855.                                 contains only the 3270 data stream.
  856.  
  857.         SCS-DATA         0x01   The data portion of the message
  858.                                 contains SNA Character Stream data.
  859.  
  860.         RESPONSE         0x02   The data portion of the message
  861.                                 constitutes device-status information
  862.                                 and the RESPONSE-FLAG field indicates
  863.                                 whether this is a positive or negative
  864.                                 response (see below).
  865.  
  866.         BIND-IMAGE       0x03   The data portion of the message is
  867.                                 the SNA bind image from the session
  868.                                 established between the server and the
  869.                                 host application.
  870.  
  871.         UNBIND           0x04   The data portion of the message is
  872.                                 an Unbind reason code.
  873.  
  874.         NVT-DATA         0x05   The data portion of the message is to
  875.                                 be interpreted as NVT data.
  876.  
  877.         REQUEST          0x06   There is no data portion present in
  878.                                 the message.  Only the REQUEST-FLAG
  879.                                 field has any meaning.
  880.  
  881.  
  882.  
  883. B. Kelly                 Expires March 1994                  [Page 15]
  884.  
  885.  
  886. Internet Draft           TN3270 Enhancements              October 1993
  887.  
  888.  
  889.      8.1.2 REQUEST-FLAG Field
  890.  
  891.       The REQUEST-FLAG field only has meaning when the DATA-TYPE field
  892.       has a value of REQUEST; otherwise, the REQUEST-FLAG field must
  893.       be ignored by the receiver and should be set to 0x00 by the
  894.       sender.  Possible values for the REQUEST-FLAG field are:
  895.  
  896.         Request-Flag Name   Code                Meaning
  897.         -----------------   ----   ---------------------------------
  898.         ERR-COND-CLEARED    0x00   The client sends this to the server
  899.                                    when some previously encountered
  900.                                    printer error condition has been
  901.                                    cleared.  (See the section entitled
  902.                                    "The RESPONSES Function" below.)
  903.  
  904.  
  905.      8.1.3 RESPONSE-FLAG Field
  906.  
  907.       The RESPONSE-FLAG field only has meaning for certain values of
  908.       the DATA-TYPE field.  For DATA-TYPE field values of 3270-DATA
  909.       and SCS-DATA, the RESPONSE-FLAG is an indication of whether or
  910.       not the sender of the data expects to receive a response.  In
  911.       this case the possible values of RESPONSE-FLAG are:
  912.  
  913.         Response-Flag Name  Code                Meaning
  914.         ------------------  ----   ---------------------------------
  915.         NO-RESPONSE         0x00   The sender does not expect the
  916.                                    receiver to respond either
  917.                                    positively or negatively to this
  918.                                    message.  The receiver must
  919.                                    therefore not send any response
  920.                                    to this data-message.
  921.  
  922.         ERROR-RESPONSE      0x01   The sender only expects the
  923.                                    receiver to respond to this message
  924.                                    if some type of error occurred, in
  925.                                    which case a negative response must
  926.                                    be sent by the receiver.
  927.  
  928.         ALWAYS-RESPONSE     0x02   The sender expects the receiver to
  929.                                    respond negatively if an error
  930.                                    occurs, or positively if no errors
  931.                                    occur.  One or the other must
  932.                                    always be sent by the receiver.
  933.  
  934.       For a DATA-TYPE field value of RESPONSE, the RESPONSE-FLAG is an
  935.       actual response to a previous data message (which must by
  936.       definition have had a DATA-TYPE of either 3270-DATA or SCS-DATA
  937.       and a RESPONSE-FLAG value of either ERROR-RESPONSE or
  938.       ALWAYS-RESPONSE).  In this case the possible values of
  939.       RESPONSE-FLAG are:
  940.  
  941.  
  942. B. Kelly                 Expires March 1994                  [Page 16]
  943.  
  944.  
  945. Internet Draft           TN3270 Enhancements              October 1993
  946.  
  947.  
  948.         Response-Flag Name  Code                Meaning
  949.         ------------------  ----   ---------------------------------
  950.         POSITIVE-RESPONSE   0x00   The previous message was received
  951.                                    and executed successfully with
  952.                                    no errors.
  953.  
  954.         NEGATIVE-RESPONSE   0x01   The previous message was received
  955.                                    but an error(s) occurred while
  956.                                    processing it.
  957.  
  958.       Accompanying status information will be found in the data
  959.       portion of the message.
  960.  
  961.       For any other values of the DATA-TYPE field, the RESPONSE-FLAG
  962.       field must be ignored by the receiver and should be set to 0x00
  963.       by the sender.
  964.  
  965.  
  966.      8.1.4 SEQ-NUMBER Field
  967.  
  968.       The SEQ-NUMBER field is only used when the RESPONSES function
  969.       has been agreed to.  It contains a 2 byte binary number, and is
  970.       used to correlate positive and negative responses to the data
  971.       messages for which they were intended.  See the section entitled
  972.       "The RESPONSES Function" for further information.  When the
  973.       RESPONSES function is not agreed to, this field should always be
  974.       set to 0x0000 by the sender and ignored by the receiver.
  975.  
  976.  
  977. 9.  Basic TN3270E
  978.  
  979.    As has been stated earlier, whether or not the use of each of the
  980.    TN3270E functions is allowed on a session is negotiated when the
  981.    connection is established.  It is possible that none of the
  982.    functions are agreed to (in this case, the function-list in the
  983.    FUNCTIONS REQUEST and FUNCTIONS IS commands is null).  This mode of
  984.    operation is referred to as "basic TN3270E."  Note that, since
  985.    neither the SCS-CTL-CODES function nor the DATA-STREAM-CTL function
  986.    is agreed to, basic TN3270E refers to terminal sessions only.
  987.  
  988.    Basic TN3270E requires the support of only the following TN3270E
  989.    header values:
  990.  
  991.           Header field         Value
  992.           ------------         -----
  993.            DATA-TYPE          3270-DATA
  994.            DATA-TYPE          NVT-DATA
  995.  
  996.    The REQUEST-FLAG, RESPONSE-FLAG and SEQ-NUMBER fields are not used
  997.    in basic TN3270E.
  998.  
  999.  
  1000.  
  1001. B. Kelly                 Expires March 1994                  [Page 17]
  1002.  
  1003.  
  1004. Internet Draft           TN3270 Enhancements              October 1993
  1005.  
  1006.  
  1007.    9.1 3270 Mode and NVT Mode
  1008.  
  1009.       At any given time, a TN3270E connection can be considered to be
  1010.       operating in either "3270 mode" or "NVT mode."  In 3270 mode,
  1011.       each party may send data messages with the DATA-TYPE flag set to
  1012.       3270-DATA; sending a DATA-TYPE flag set to NVT-DATA constitutes
  1013.       a request to switch modes.  In NVT mode, each party may send
  1014.       data messages with the DATA-TYPE flag set to NVT-DATA; sending
  1015.       3270-DATA is a request to switch modes.  The connection is
  1016.       initially in 3270 mode when TN3270E operation is successfully
  1017.       negotiated.  When a party receives a message with a DATA-TYPE
  1018.       different from the mode it is operating in, the mode of
  1019.       operation for the connection is switched.  Switching modes
  1020.       results in the client performing the equivalent of a 3270
  1021.       Erase/Reset operation, as described in [5], using the default
  1022.       partition (screen) size.  The server cannot assume the client
  1023.       preserves any attributes of the previous environment across a
  1024.       mode switch.
  1025.  
  1026.       Note that even when sending NVT-DATA, each side should buffer
  1027.       data until an entire message is built (for the client, this
  1028.       would normally mean until the user presses Enter).  At that
  1029.       point, a complete TN3270E data message should be built to
  1030.       transmit the NVT data.
  1031.  
  1032.       Typically, NVT data is used by a server to interact with the
  1033.       user of a client.  It allows the server to do this using a
  1034.       simple NVT data stream, instead of requiring a 3270 data stream.
  1035.       An example would be a server which displays a list of 3270
  1036.       applications to which it can connect the client.  The server
  1037.       would use NVT data to display the list and read the user's
  1038.       choice.  Then the server would connect to the application, and
  1039.       begin the exchange of 3270 data between the application and the
  1040.       client.
  1041.  
  1042.  
  1043. 10. Details of Processing TN3270E Functions
  1044.  
  1045.    Agreement by both parties to a specific function in the FUNCTIONS
  1046.    REQUEST function-list implies agreement by each party to support a
  1047.    related set of values in the TN3270E header.  It also implies a
  1048.    willingness to adhere to the rules governing the processing of data
  1049.    messages as regards the agreed upon function.  Either party that
  1050.    fails to accept header values associated either with agreed upon
  1051.    functions or with basic TN3270E, or attempts to use header values
  1052.    associated with a function that is not a part of basic TN3270E and
  1053.    was not agreed upon, will be considered non-conforming and in
  1054.    violation of the protocol.  The following sections detail for each
  1055.    TN3270E function the associated header values and processing
  1056.    rules.
  1057.  
  1058.  
  1059.  
  1060. B. Kelly                 Expires March 1994                  [Page 18]
  1061.  
  1062.  
  1063. Internet Draft           TN3270 Enhancements              October 1993
  1064.  
  1065.  
  1066.    10.1 The SCS-CTL-CODES Function
  1067.  
  1068.       This function can only be supported on a 3270 printer session.
  1069.       If either party receives this function in a FUNCTIONS REQUEST
  1070.       function-list when the previously negotiated device-type
  1071.       represents a terminal, it must remove the SCS-CTL-CODES function
  1072.       from the list before responding with a FUNCTIONS REQUEST of its
  1073.       own.
  1074.  
  1075.       Agreement to support this function requires that the party
  1076.       support the following TN3270E header values:
  1077.  
  1078.           Header field         Value
  1079.           ------------         -----
  1080.            DATA-TYPE          SCS-DATA
  1081.  
  1082.       A client representing a printer device uses this function to
  1083.       indicate its willingness to accept a data stream that includes
  1084.       SCS control codes.  For the purposes of NVT mode versus 3270
  1085.       mode, SCS-DATA should be treated exactly like 3270-DATA (i.e.,
  1086.       it can cause a switch from NVT mode to 3270 mode).
  1087.  
  1088.       When a printer device-type has been negotiated, either the
  1089.       SCS-CTL-CODES function or the DATA-STREAM-CTL function, or both,
  1090.       must be negotiated.  This enables the server to know when it
  1091.       should and should not accept a session with a host application
  1092.       on behalf of the client.  If only the SCS-CTL-CODES function is
  1093.       agreed to, then the server will not establish sessions with host
  1094.       applications that would send 3270 data stream control.  If both
  1095.       SCS-CTL-CODES and DATA-STREAM-CTL are agreed to, then the server
  1096.       will establish sessions both with host applications that would
  1097.       send SCS control codes and with those that would send 3270
  1098.       orders.
  1099.  
  1100.  
  1101.    10.2 The DATA-STREAM-CTL Function
  1102.  
  1103.       This function can only be supported on a 3270 printer session.
  1104.       If either party receives this function in a FUNCTIONS REQUEST
  1105.       function-list when the previously negotiated device-type
  1106.       represents a terminal, it must remove the DATA-STREAM-CTL
  1107.       function from the list before responding with a FUNCTIONS
  1108.       REQUEST of its own.
  1109.  
  1110.       Agreement to support this function requires that the party
  1111.       support the following TN3270E header values:
  1112.  
  1113.           Header field         Value
  1114.           ------------         -----
  1115.            DATA-TYPE          3270-DATA
  1116.  
  1117.  
  1118.  
  1119. B. Kelly                 Expires March 1994                  [Page 19]
  1120.  
  1121.  
  1122. Internet Draft           TN3270 Enhancements              October 1993
  1123.  
  1124.  
  1125.       A client representing a printer device uses this function to
  1126.       indicate its willingness to accept a data stream that includes
  1127.       3270 orders and attributes.
  1128.  
  1129.       When a printer device-type has been negotiated, either the
  1130.       SCS-CTL-CODES function or the DATA-STREAM-CTL function, or both,
  1131.       must be negotiated.  This enables the server to know when it
  1132.       should and should not accept a session with a host application
  1133.       on behalf of the client.  If only the DATA-STREAM-CTL function
  1134.       is agreed to, then the server will not establish sessions with
  1135.       host applications that would send SCS control codes in a data
  1136.       stream.  If both SCS-CTL-CODES and DATA-STREAM-CTL are agreed
  1137.       to, then the server will establish sessions both with host
  1138.       applications that would send SCS control codes and with those
  1139.       that would send 3270 orders.
  1140.  
  1141.  
  1142.    10.3 The BIND-IMAGE Function
  1143.  
  1144.       This function can only be supported when the TN3270E server
  1145.       represents SNA terminals and printers.
  1146.  
  1147.       Agreement to support this function requires that the party
  1148.       support the following TN3270E header values:
  1149.  
  1150.           Header field         Value
  1151.           ------------         -----
  1152.            DATA-TYPE          BIND-IMAGE
  1153.            DATA-TYPE          UNBIND
  1154.  
  1155.       When BIND-IMAGE is in effect, the server must inform the client
  1156.       when an SNA session has been established with a host
  1157.       application, and when such a session has been terminated.  It
  1158.       uses DATA-TYPE values of BIND-IMAGE and UNBIND to convey this
  1159.       information.
  1160.  
  1161.       When establishing an SNA session on behalf of a client, the
  1162.       server will receive a Bind RU from the host application.  It
  1163.       will also receive a Start Data Traffic RU.  Once both of these
  1164.       have been responded to positively by the server, it must then
  1165.       inform the client of the presence of this session by sending it
  1166.       a data message with the DATA-TYPE flag set to BIND-IMAGE.  The
  1167.       data portion of this message must contain the bind image exactly
  1168.       as it was received in the Bind RU that the server accepted on
  1169.       behalf of the client.
  1170.  
  1171.       When an SNA session between the server and a host application is
  1172.       terminated, the server should send a data message to the client
  1173.       with the DATA-TYPE flag set to UNBIND.  If the server was
  1174.       notified of the session termination via an SNA Unbind RU, it
  1175.       should include the Unbind reason code in the data portion of the
  1176.  
  1177.  
  1178. B. Kelly                 Expires March 1994                  [Page 20]
  1179.  
  1180.  
  1181. Internet Draft           TN3270 Enhancements              October 1993
  1182.  
  1183.  
  1184.       message it sends to the client.  If the server itself requested
  1185.       the SNA session termination (for example, as part of SYSREQ key
  1186.       processing), it should set the data portion of the UNBIND
  1187.       message to 0x01, indicating "normal end of session."
  1188.  
  1189.       Another aspect of the BIND-IMAGE function alters the allowable
  1190.       DATA-TYPE flag values slightly from the behavior described in
  1191.       the section entitled "Basic TN3270E."  When BIND-IMAGE is in
  1192.       effect, data messages with DATA-TYPE set to 3270-DATA are not
  1193.       allowed before the first BIND-IMAGE is received by the client;
  1194.       only SCS-DATA or NVT-DATA can be used to transmit user-oriented
  1195.       data.  The same applies to data messages exchanged after an
  1196.       UNBIND is sent and before another BIND-IMAGE is received by the
  1197.       client.  Once the client receives a BIND-IMAGE data message, the
  1198.       allowable DATA-TYPE values (while in 3270 mode, as opposed to
  1199.       NVT mode) are determined by the following:
  1200.  
  1201.       - for terminal sessions, only 3270-DATA is allowed unless the
  1202.         SYSREQ function has been negotiated (see the section entitled
  1203.         "The SYSREQ function").
  1204.  
  1205.       - for printer sessions, either 3270-DATA or SCS-DATA, or both,
  1206.         may be allowed, depending on which types were negotiated.  See
  1207.         the sections entitled "The SCS-CTL-CODES Function" and "The
  1208.         DATA-STREAM-CTL Function" for more information.
  1209.  
  1210.  
  1211.    10.4 The RESPONSES Function
  1212.  
  1213.       This function can be supported for both terminal and printer
  1214.       sessions connected to both SNA and non-SNA servers.
  1215.  
  1216.       Agreement to support this function requires that the party
  1217.       support the following TN3270E header values:
  1218.  
  1219.           Header field         Value
  1220.           ------------         -----
  1221.            DATA-TYPE          RESPONSE
  1222.            DATA-TYPE          REQUEST
  1223.            RESPONSE-FLAG      -all values-
  1224.            REQUEST-FLAG       ERR-COND-CLEARED
  1225.            SEQ-NUMBER         binary values from 0-32767
  1226.  
  1227.       Whenever a data message is sent with a DATA-TYPE of either
  1228.       SCS-DATA or 3270-DATA, the sender must set the RESPONSE-FLAG
  1229.       field to either NO-RESPONSE, ERROR-RESPONSE, or ALWAYS-RESPONSE.
  1230.       It is anticipated that the client side will normally set
  1231.       RESPONSE-FLAG to NO-RESPONSE.  The server, if it represents an
  1232.       SNA device, should set RESPONSE-FLAG to reflect the response
  1233.       value set in the RH of the RU that generated this data message -
  1234.       Definite Response resulting in a RESPONSE-FLAG value of
  1235.  
  1236.  
  1237. B. Kelly                 Expires March 1994                  [Page 21]
  1238.  
  1239.  
  1240. Internet Draft           TN3270 Enhancements              October 1993
  1241.  
  1242.  
  1243.       ALWAYS-RESPONSE, Exception Response resulting in ERROR-RESPONSE
  1244.       being set, and No Response causing a setting of NO-RESPONSE.  A
  1245.       non-SNA server should set RESPONSE-FLAG to ERROR-RESPONSE.
  1246.  
  1247.       In addition, the sender must keep a count of the messages with a
  1248.       DATA-TYPE of 3270-DATA or SCS-DATA that it sends on a given
  1249.       session.  This counter should start at zero for the first such
  1250.       message, and be incremented by one for each subsequent message.
  1251.       If the counter reaches the maximum of 32767, it should be
  1252.       restarted at zero.  The sender should place this value in the
  1253.       SEQ-NUMBER field of the TN3270E header before it sends the
  1254.       message.  Note that the SEQ-NUMBER field must be set regardless
  1255.       of the value of the RESPONSE-FLAG field.
  1256.  
  1257.  
  1258.      10.4.1 Response Messages
  1259.  
  1260.       Whenever a data message with a DATA-TYPE of either SCS-DATA or
  1261.       3270-DATA is received, the receiver must attempt to process the
  1262.       data in the data portion of the message, then determine whether
  1263.       or not it should send a data message with a DATA-TYPE of
  1264.       RESPONSE.  If the data message it has just processed had a
  1265.       RESPONSE-FLAG value of NO-RESPONSE, or if it had a value of
  1266.       ERROR-RESPONSE and there were no errors encountered while
  1267.       processing the data, then no RESPONSE type message should be
  1268.       sent.  Otherwise, a data message should be sent in which the
  1269.       header DATA-TYPE field is set to RESPONSE, and in which the
  1270.       SEQ-NUMBER field is a copy of the SEQ-NUMBER field from the
  1271.       message to which this response corresponds.  The RESPONSE-FLAG
  1272.       field in this header must have a value of either
  1273.       POSITIVE-RESPONSE or NEGATIVE-RESPONSE.  A POSITIVE-RESPONSE
  1274.       should be sent if the previously processed message's header
  1275.       specified ALWAYS-RESPONSE and no errors were encountered in
  1276.       processing the data.  A NEGATIVE-RESPONSE should be sent when
  1277.  
  1278.           1) the previously processed message specified ERROR-RESPONSE
  1279.              or ALWAYS-RESPONSE and
  1280.  
  1281.           2) some kind of error occurred while processing the data.
  1282.  
  1283.       Please keep in mind that it is normally only the client that
  1284.       will be constructing and sending these RESPONSE messages.  A
  1285.       negative response sent by the client to the server is the
  1286.       equivalent of a Unit Check Status [7].  All references to device
  1287.       status and sense codes in this section rely on [7].
  1288.  
  1289.       The data portion of this RESPONSE message must consist of one
  1290.       byte of binary data.  The value of this byte gives a more
  1291.       detailed account of the results of having processed the
  1292.       previously received data message.  The possible values for this
  1293.       byte are:
  1294.  
  1295.  
  1296. B. Kelly                 Expires March 1994                  [Page 22]
  1297.  
  1298.  
  1299. Internet Draft           TN3270 Enhancements              October 1993
  1300.  
  1301.  
  1302.            For a RESPONSE-FLAG value of POSITIVE-RESPONSE -
  1303.  
  1304.              Value            Meaning
  1305.              -----            -------
  1306.              0x00      Successful completion (when sent by the client,
  1307.                        this is equivalent to "Device End").
  1308.  
  1309.            For a RESPONSE-FLAG value of NEGATIVE-RESPONSE -
  1310.  
  1311.              Value            Meaning
  1312.              -----            -------
  1313.              0x00      An invalid 3270 command was received
  1314.                        (equivalent to "Command Reject").
  1315.  
  1316.              0x01      Printer is not ready (equivalent to
  1317.                        "Intervention Required").
  1318.  
  1319.              0x02      An illegal 3270 buffer address or order
  1320.                        sequence was received (equivalent to
  1321.                        "Operation Check").
  1322.  
  1323.              0x03      Printer is powered off or not connected
  1324.                        (equivalent to "Component Disconnected").
  1325.  
  1326.       When the server receives any of the above responses, it should
  1327.       pass along the appropriate information to the host application.
  1328.       The appropriate information is determined by whether the server
  1329.       represents an SNA or a non-SNA device.
  1330.  
  1331.       An SNA server should pass along a POSITIVE-RESPONSE from the
  1332.       client as a positive SNA Response Unit to the host application.
  1333.       It should translate a NEGATIVE-RESPONSE from the client into an
  1334.       SNA negative Response Unit in which the Sense Data Indicator bit
  1335.       is on and which contains one of the following sense codes:
  1336.  
  1337.              RESPONSE-FLAG        Equivalent        SNA Sense Code
  1338.              -------------        ----------        --------------
  1339.                  0x00           Command Reject        0x10030000
  1340.  
  1341.                  0x01        Intervention Required    0x08020000
  1342.  
  1343.                  0x02           Operation Check       0x10050000
  1344.  
  1345.                  0x03        Component Disconnected   0x08310000
  1346.  
  1347.       A non-SNA server should pass along a POSITIVE-RESPONSE from the
  1348.       client by setting the Device End Status bit on.  It should
  1349.       reflect a NEGATIVE-RESPONSE from the client by setting the Unit
  1350.       Check Status Bit on, and setting either the Command Reject,
  1351.       Intervention Required, or Operation Check Sense bit on when
  1352.       responding to the Sense command.
  1353.  
  1354.  
  1355. B. Kelly                 Expires March 1994                  [Page 23]
  1356.  
  1357.  
  1358. Internet Draft           TN3270 Enhancements              October 1993
  1359.  
  1360.  
  1361.       In the case of Intervention Required or Component Disconnected
  1362.       being passed by the server to the host application, the host
  1363.       would normally refrain from sending any further data to the
  1364.       printer.  If and when the error condition at the client has been
  1365.       resolved, the client must send to the server a data message
  1366.       whose header DATA-TYPE field is set to REQUEST, and whose
  1367.       REQUEST-FLAG is set to ERR-COND-CLEARED.  Note that this message
  1368.       has no data portion.  Upon receipt of this message, the server
  1369.       should pass along the appropriate information to the host
  1370.       application so that it may resume sending printer output.
  1371.       Again, the form of this information depends on whether the
  1372.       server represents an SNA or a non-SNA device.
  1373.  
  1374.       An SNA server should reflect an ERR-COND-CLEARED to the host
  1375.       application by sending an SNA LUSTAT RU with one of the
  1376.       following sense codes:
  1377.  
  1378.           - if the previous error condition was an Intervention
  1379.             Required, the server should send sense code 0x00010000
  1380.  
  1381.           - if the previous error condition was Component
  1382.             Disconnected, the server should send sense code 0x082B0000
  1383.  
  1384.       A non-SNA server should set the corresponding bits in the Ending
  1385.       Status and Sense Condition bytes.
  1386.  
  1387.  
  1388.    10.5 The SYSREQ Function
  1389.  
  1390.       This function can only be supported when the TN3270E server
  1391.       represents SNA devices.
  1392.  
  1393.       Agreement to support this function requires that the party
  1394.       support the following TN3270E header values:
  1395.  
  1396.           Header field         Value
  1397.           ------------         -----
  1398.            DATA-TYPE          SCS-DATA
  1399.  
  1400.       The 3270 SYSREQ key can be useful in an SNA environment when the
  1401.       ATTN key is not sufficient to terminate a process.  (See the
  1402.       section entitled "The 3270 ATTN Key" for more information.)
  1403.  
  1404.  
  1405.      10.5.1 Background
  1406.  
  1407.       In SNA, there is a session between the host application (the
  1408.       PLU, or Primary Logical Unit) and the TN3270E server
  1409.       representing the client (the SLU, or Secondary Logical Unit).
  1410.       This is referred to as the PLU-SLU session, and it is the one on
  1411.       which normal communications flow.  There is also a session
  1412.  
  1413.  
  1414. B. Kelly                 Expires March 1994                  [Page 24]
  1415.  
  1416.  
  1417. Internet Draft           TN3270 Enhancements              October 1993
  1418.  
  1419.  
  1420.       between the host telecommunications access method (the SSCP, or
  1421.       System Services Control Point) and the SLU, and it is referred
  1422.       to as the SSCP-LU session.  This session is used to carry
  1423.       various control information and is normally transparent to the
  1424.       user.  For more information, refer to [7].
  1425.  
  1426.       The terminal display and keyboard are usually "owned" by the
  1427.       PLU-SLU session, meaning any data the user types is sent to the
  1428.       host application.  The SYSREQ key is used to toggle ownership of
  1429.       the keyboard and display between the PLU-SLU session and the
  1430.       SSCP-LU session.  In other words, the user is able to press
  1431.       SYSREQ and then communicate directly with the host SSCP.  The
  1432.       user may then enter any valid Unformatted Systems Services
  1433.       commands, which are defined in the USS table associated with the
  1434.       SLU.  The most common USS command users employ is "LOGOFF,"
  1435.       which requests that the SSCP immediately terminate the PLU-SLU
  1436.       session.  The usual reason for requesting such an action is that
  1437.       the host application (the PLU) has stopped responding
  1438.       altogether.
  1439.  
  1440.       Whenever the keyboard and display are owned by the SSCP-LU
  1441.       session, no data is allowed to flow in either direction on the
  1442.       PLU-SLU session.  Once "in" the SSCP-LU session, the user may
  1443.       decide to switch back to the PLU-SLU session by again pressing
  1444.       the SYSREQ key.
  1445.  
  1446.      10.5.2 TN3270E Implementation of SYSREQ
  1447.  
  1448.       The design of some TN3270E servers allows them to fully support
  1449.       the SYSREQ key because they are allowed to send USS commands on
  1450.       the SSCP-LU session.  Other TN3270E servers operate in an
  1451.       environment which does not allow them to send USS commands to
  1452.       the SSCP; this makes full support of the SYSREQ key impossible.
  1453.       For such servers, TN3270E provides for emulation of a minimal
  1454.       subset of functions, namely, for the sequence of pressing SYSREQ
  1455.       and typing LOGOFF that many users employ to immediately
  1456.       terminate the PLU-SLU session.
  1457.  
  1458.       The Telnet Abort Output (AO) command is the mechanism used to
  1459.       implement SYSREQ key support in TN3270E because, in a real SNA
  1460.       session, once the user presses the SYSREQ key, the host
  1461.       application is prevented from sending any more output to the
  1462.       terminal (unless the user presses SYSREQ a second time), but the
  1463.       user's process continues to execute.
  1464.  
  1465.       In order to implement SYSREQ key support, TN3270E clients that
  1466.       have agreed to the SYSREQ function should provide a key (or
  1467.       combination of keys) that is identified as mapping to the 3270
  1468.       SYSREQ key.  When the user presses this key(s), the client
  1469.       should transmit a Telnet AO command to the server.
  1470.  
  1471.  
  1472.  
  1473. B. Kelly                 Expires March 1994                  [Page 25]
  1474.  
  1475.  
  1476. Internet Draft           TN3270 Enhancements              October 1993
  1477.  
  1478.  
  1479.       Upon receipt of the AO command, a TN3270E server that has agreed
  1480.       to the SYSREQ function should enter what will be loosely termed
  1481.       "suspended mode" for the connection.  (If a server that has not
  1482.       agreed to the SYSREQ function receives an AO command, it should
  1483.       simply ignore it.)  Any attempt by the host application to send
  1484.       data to the client while the connection is "suspended" should be
  1485.       responded to by the server with a negative response, sense code
  1486.       0x082D, indicating an "LU Busy" condition.  The server should
  1487.       not transmit anything to the client on behalf of the host
  1488.       application.  While the connection is "suspended," any data
  1489.       messages (except TN3270E responses) exchanged between the client
  1490.       and server should have the DATA-TYPE flag set to SCS-DATA.
  1491.  
  1492.       At this point, the behavior of the server depends upon whether
  1493.       or not it is allowed to send USS commands on the SSCP-LU
  1494.       session.  Servers that have this ability should simply act as a
  1495.       vehicle for passing USS commands and responses between the
  1496.       client and the SSCP.
  1497.  
  1498.       Servers that are not allowed to send USS commands on the SSCP-LU
  1499.       session should behave as follows:
  1500.  
  1501.       - if the user transmits the string LOGOFF (upper or lower case),
  1502.         the server should send an Unbind SNA RU to the host
  1503.         application.  This will result in termination of the PLU-SLU
  1504.         session.  If the BIND-IMAGE function was agreed upon, then
  1505.         the server should also send a data message to the client with
  1506.         the DATA-TYPE flag set to UNBIND and the data portion set to
  1507.         0x01.
  1508.  
  1509.       - if the user transmits anything other than LOGOFF, the server
  1510.         should respond with the string "COMMAND UNRECOGNIZED" to the
  1511.         client.  The server should not send anything to the host
  1512.         application on behalf of the client.
  1513.  
  1514.       Regardless of which kind of server is present (i.e., whether or
  1515.       not it may send USS commands on the SSCP-LU session), while the
  1516.       connection is suspended, the user may press the "SYSREQ" key
  1517.       again.  This will result in the transmission of another AO to
  1518.       the server.  The server should then send to the host application
  1519.       an LUSTAT RU with a value of 0x082B indicating "presentation
  1520.       space integrity lost."  The server will then "un-suspend" the
  1521.       Telnet connection to the client, meaning it will allow the host
  1522.       application to once again send data to the client.
  1523.  
  1524.  
  1525. 11. The 3270 ATTN Key
  1526.  
  1527.    The 3270 ATTN key is interpreted by many host applications in an
  1528.    SNA environment as an indication that the user wishes to interrupt
  1529.    the execution of the current process.  The Telnet Interrupt Process
  1530.  
  1531.  
  1532. B. Kelly                 Expires March 1994                  [Page 26]
  1533.  
  1534.  
  1535. Internet Draft           TN3270 Enhancements              October 1993
  1536.  
  1537.  
  1538.    (IP) command was defined expressly for such a purpose, so it is
  1539.    used to implement support for the 3270 ATTN key.  This requires two
  1540.    things:
  1541.  
  1542.     - TN3270E clients should provide as part of their keyboard
  1543.       mapping a single key or a combination of keys that map to
  1544.       the 3270 ATTN key.  When the user presses this key(s), the
  1545.       client should transmit a Telnet IP command to the server.
  1546.  
  1547.     - TN3270E servers should translate the IP command received from
  1548.       a TN3270E client into the appropriate form and pass it along
  1549.       to the host application as an ATTN key.  In other words, the
  1550.       server representing an SLU in an SNA session should send
  1551.       a SIGNAL RU to the host application.
  1552.  
  1553.    The ATTN key is not supported in a non-SNA environment; therefore,
  1554.    a TN3270E server representing non-SNA 3270 devices should ignore
  1555.    any Telnet IP commands it receives from a client.
  1556.  
  1557.  
  1558. 12. 3270 Structured Fields
  1559.  
  1560.    3270 structured fields provide a much wider range of features than
  1561.    "old-style" 3270 data, such as support for graphics, partitions and
  1562.    IPDS printer data streams. It would be unreasonable to expect all
  1563.    TN3270E clients to support all possible structured field functions,
  1564.    yet there must be a mechanism by which those clients that are
  1565.    capable of supporting some or all structured field functions can
  1566.    indicate their wishes.
  1567.  
  1568.    The design of 3270 structured fields provides a convenient means to
  1569.    convey the level of support (including no support) for the various
  1570.    structured field functions.  This mechanism is the Read Partition
  1571.    Query command, which is sent from the host application to the
  1572.    device.  The device responds with a Query Reply(s) structured
  1573.    field, listing which, if any, structured field functions it
  1574.    supports.
  1575.  
  1576.    The Query Reply is also used to indicate some device capabilities
  1577.    which do not require the use of structured fields, such as extended
  1578.    color support and extended highlighting capability.  Most host
  1579.    applications will use Read Partition Query to precisely determine a
  1580.    device's capabilities when there has been some indication that the
  1581.    device supports the "extended data stream."
  1582.  
  1583.    Therefore, all TN3270E clients that negotiate a terminal
  1584.    device-type that contains a "-E" suffix, as well as those that
  1585.    negotiate a printer device-type, must be able to respond to a Read
  1586.    Partition Query command.  Note that these clients must support both
  1587.    the Read Partition Query (Type 02), and all forms of the Read
  1588.    Partition Query List (Type 03).
  1589.  
  1590.  
  1591. B. Kelly                 Expires March 1994                  [Page 27]
  1592.  
  1593.  
  1594. Internet Draft           TN3270 Enhancements              October 1993
  1595.  
  1596.  
  1597. 13. Examples
  1598.  
  1599.    The following example shows a TN3270E-capable server and a
  1600.    traditional tn3270 client establishing a connection:
  1601.  
  1602.       Server:  IAC DO TN3270E
  1603.       Client:  IAC WON'T TN3270E
  1604.       Server:  IAC DO TERMINAL-TYPE
  1605.       Client:  IAC WILL TERMINAL-TYPE
  1606.       Server:  IAC SB TERMINAL-TYPE SEND IAC SE
  1607.       Client:  IAC SB TERMINAL-TYPE IS IBM-3278-2 IAC SE
  1608.       Server:  IAC DO EOR IAC WILL EOR
  1609.       Client:  IAC WILL EOR IAC DO EOR
  1610.       Server:  IAC DO BINARY IAC WILL BINARY
  1611.       Client:  IAC WILL BINARY IAC DO BINARY
  1612.          (3270 data stream is exchanged)
  1613.  
  1614.    The following example shows a TN3270E-capable server and a
  1615.    TN3270E-capable client establishing a generic pool (non-specific)
  1616.    terminal session:
  1617.  
  1618.       Server:  IAC DO TN3270E
  1619.       Client:  IAC WILL TN3270E
  1620.       Server:  IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  1621.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3278-2 IAC SE
  1622.       Server:  IAC SB TN3270E DEVICE-TYPE IS IBM-3278-2 CONNECT
  1623.                       anyterm IAC SE
  1624.       Client:  IAC SB TN3270E FUNCTIONS REQUEST RESPONSES IAC SE
  1625.       Server:  IAC SB TN3270E FUNCTIONS IS RESPONSES IAC SE
  1626.          (3270 data stream is exchanged)
  1627.  
  1628.    The following example shows a TN3270E-capable server and a
  1629.    TN3270E-capable client establishing a terminal session where the
  1630.    client requests a specific device-name:
  1631.  
  1632.       Server:  IAC DO TN3270E
  1633.       Client:  IAC WILL TN3270E
  1634.       Server:  IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  1635.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3278-5
  1636.                       CONNECT myterm IAC SE
  1637.       Server:  IAC SB TN3270E DEVICE-TYPE IS IBM-3278-5 CONNECT
  1638.                       myterm IAC SE
  1639.       Client:  IAC SB TN3270E FUNCTIONS REQUEST RESPONSES IAC SE
  1640.       Server:  IAC SB TN3270E FUNCTIONS IS RESPONSES IAC SE
  1641.          (3270 data stream is exchanged)
  1642.  
  1643.    The following example shows a TN3270E-capable server and a
  1644.    TN3270E-capable client attempting to establish a terminal session;
  1645.    multiple attempts are necessary because the device-name initially
  1646.    requested by the client is already in use:
  1647.  
  1648.  
  1649.  
  1650. B. Kelly                 Expires March 1994                  [Page 28]
  1651.  
  1652.  
  1653. Internet Draft           TN3270 Enhancements              October 1993
  1654.  
  1655.  
  1656.       Server:  IAC DO TN3270E
  1657.       Client:  IAC WILL TN3270E
  1658.       Server:  IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  1659.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3278-5
  1660.                       CONNECT myterm IAC SE
  1661.       Server:  IAC SB TN3270E DEVICE-TYPE REJECT REASON
  1662.                       DEVICE-IN-USE IAC SE
  1663.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3278-2
  1664.                       CONNECT herterm IAC SE
  1665.       Server:  IAC SB TN3270E DEVICE-TYPE IS IBM-3278-2 CONNECT
  1666.                       herterm IAC SE
  1667.       Client:  IAC SB TN3270E FUNCTIONS REQUEST RESPONSES IAC SE
  1668.       Server:  IAC SB TN3270E FUNCTIONS IS RESPONSES IAC SE
  1669.          (3270 data stream is exchanged)
  1670.  
  1671.    The following example shows a TN3270E-capable server and a
  1672.    TN3270E-capable client establishing a printer session where the
  1673.    client requests a specific device-name, and where some amount
  1674.    of 3270 function negotiation is required before an agreement is
  1675.    reached:
  1676.  
  1677.       Server:  IAC DO TN3270E
  1678.       Client:  IAC WILL TN3270E
  1679.       Server:  IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  1680.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3287-1 CONNECT
  1681.                       myprt IAC SE
  1682.       Server:  IAC SB TN3270E DEVICE-TYPE IS IBM-3287-1 CONNECT
  1683.                       myprt IAC SE
  1684.       Client:  IAC SB TN3270E FUNCTIONS REQUEST DATA-STREAM-CTL IAC SE
  1685.       Server:  IAC SB TN3270E FUNCTIONS REQUEST DATA-STREAM-CTL
  1686.                       RESPONSES IAC SE
  1687.       Client:  IAC SB TN3270E FUNCTIONS REQUEST DATA-STREAM-CTL IAC SE
  1688.       Server:  IAC SB TN3270E FUNCTIONS IS DATA-STREAM-CTL IAC SE
  1689.          (3270 data stream is exchanged)
  1690.  
  1691.    The following example shows a TN3270E-capable server and a
  1692.    TN3270E-capable client establishing first a generic terminal
  1693.    session, then a printer session where the "partner" printer for
  1694.    the assigned terminal is requested:
  1695.  
  1696.       Server:  IAC DO TN3270E
  1697.       Client:  IAC WILL TN3270E
  1698.       Server:  IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  1699.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3278-2 IAC SE
  1700.       Server:  IAC SB TN3270E DEVICE-TYPE IS IBM-3278-2 CONNECT
  1701.                       termXYZ IAC SE
  1702.       Client:  IAC SB TN3270E FUNCTIONS REQUEST RESPONSES IAC SE
  1703.       Server:  IAC SB TN3270E FUNCTIONS IS RESPONSES IAC SE
  1704.          (3270 data stream is exchanged)
  1705.            .            .
  1706.            .            .
  1707.  
  1708.  
  1709. B. Kelly                 Expires March 1994                  [Page 29]
  1710.  
  1711.  
  1712. Internet Draft           TN3270 Enhancements              October 1993
  1713.  
  1714.  
  1715.          (user decides to request a printer session,
  1716.           so client again connects to Telnet port on server)
  1717.       Server:  IAC DO TN3270E
  1718.       Client:  IAC WILL TN3270E
  1719.       Server:  IAC SB TN3270E SEND DEVICE-TYPE IAC SE
  1720.       Client:  IAC SB TN3270E DEVICE-TYPE REQUEST IBM-3287-1
  1721.                       ASSOCIATE termXYZ IAC SE
  1722.       Server:  IAC SB TN3270E DEVICE-TYPE IS IBM-3287-1 CONNECT
  1723.                       termXYZ's-prt IAC SE
  1724.       Client:  IAC SB TN3270E FUNCTIONS REQUEST SCS-CTL-CODES
  1725.                       RESPONSES IAC SE
  1726.       Server:  IAC SB TN3270E FUNCTIONS IS SCS-CTL-CODES RESPONSES
  1727.                       IAC SE
  1728.          (3270 data stream is exchanged)
  1729.  
  1730.  
  1731. 14. References
  1732.  
  1733. [1] Rekhter, J., "Telnet 3270 Regime Option", RFC 1041, IBM
  1734.     Corporation, January 1988.
  1735.  
  1736. [2] VanBokkelen, J., "Telnet Terminal-Type Option", RFC 1091,
  1737.     FTP Software, Inc., February 1989.
  1738.  
  1739. [3] Postel, J., and J. Reynolds, "Telnet Binary Transmission",
  1740.     RFC 856, USC/Information Sciences Institute, May 1983.
  1741.  
  1742. [4] Postel, J., "Telnet End of Record Option", RFC 885, USC/
  1743.     Information Sciences Institute, December 1983.
  1744.  
  1745. [5] "3270 Information Display System - Data Stream Programmer's
  1746.     Reference", publication number GA24-0059, IBM Corporation.
  1747.  
  1748. [6] "SNA Formats", publication number GA27-3136, IBM Corporation.
  1749.  
  1750. [7] "3174 Establishment Controller Functional Description",
  1751.     publication number GA23-0218, IBM Corporation.
  1752.  
  1753.  
  1754. 15. Author's Note
  1755.  
  1756.    Portions of this document were drawn from the following sources:
  1757.  
  1758.     - A White Paper written by Owen Reddecliffe, WRQ Corporation,
  1759.       October 1991.
  1760.  
  1761.     - Experimental work on the part of Cleve Graves and Michelle
  1762.       Angel, OpenConnect Systems, 1992 - 1993.
  1763.  
  1764.     - Discussions at the March 1993 IETF meeting.
  1765.  
  1766.     - Discussions on the "TN3270E" list, Spring/Summer 1993.
  1767.  
  1768. B. Kelly                 Expires March 1994                  [Page 30]
  1769.  
  1770.  
  1771.  
  1772. 16. Author's Address
  1773.  
  1774.    Bill Kelly
  1775.    Division of University Computing
  1776.    144 Parker Hall
  1777.    Auburn University, AL  36849
  1778.  
  1779.    Phone: (205) 844-4512
  1780.  
  1781.    Email: kellywh@mail.auburn.edu
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827. B. Kelly                 Expires March 1994                  [Page 31]
  1828.  
  1829.  
  1830.  
  1831.  
  1832.